﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PauloC.DAL;
using PauloC.DTO;

namespace PauloC.BLL
{
    public class UsuarioBLL
    {
        Context dbContext = new Context();
        //public ICollection<UsuarioDB> Buscar(){

        //  }
        public UsuarioDTO Buscar(int id)
        {
            UsuarioDB usuarioDB = dbContext.Usuario.First(x => x.Id == id);
            return ConverterParaDTO(usuarioDB);
        }

        public UsuarioDTO Inserir(UsuarioDTO usuarioDTO)
        {
            UsuarioDB usuarioDB = ConverterParaDB(usuarioDTO);
            dbContext.Usuario.Add(usuarioDB);
            dbContext.SaveChanges();
            return ConverterParaDTO(usuarioDB);
        }
        public void Excluir(int id)
        {
            UsuarioDB usuarioDB = dbContext.Usuario.First(x => x.Id == id);
            dbContext.Usuario.Remove(usuarioDB);
            dbContext.SaveChanges();
        }
        public void Atualizar(UsuarioDTO usuarioDTO)
        {
            UsuarioDB usuarioDB = dbContext.Usuario.First(x => x.Id == usuarioDTO.Id);
            usuarioDB.DataCadastro = usuarioDTO.DataCadastro;
            usuarioDB.Email = usuarioDTO.Email;
            usuarioDB.Login = usuarioDTO.Login;
            usuarioDB.Nome = usuarioDTO.Nome;
            usuarioDB.Senha = usuarioDTO.Senha;
            usuarioDB.Tipo.Id = usuarioDTO.Tipo.Id;
            dbContext.SaveChanges();
        }
        public ICollection<UsuarioDTO> Listar()
        {
            List<UsuarioDTO> list = new List<UsuarioDTO>();
            foreach (var item in dbContext.Usuario.ToList())
            {
                list.Add(ConverterParaDTO(item));
            }
            return list;
        }
        public UsuarioDTO ConverterParaDTO(UsuarioDB usuarioDB)
        {
            UsuarioDTO usuarioDTO = new UsuarioDTO();
            usuarioDTO.DataCadastro = usuarioDB.DataCadastro;
            usuarioDTO.Email = usuarioDB.Email;
            usuarioDTO.Login = usuarioDB.Login;
            usuarioDTO.Nome = usuarioDB.Nome;
            usuarioDTO.Senha = usuarioDB.Senha;
            usuarioDTO.Tipo = new TipoUsuarioBLL().ConverterParaDTO(usuarioDB.Tipo);
            usuarioDTO.Id = usuarioDB.Id;
            return usuarioDTO;

        }
        public UsuarioDB ConverterParaDB(UsuarioDTO usuarioDTO)
        {
            UsuarioDB usuarioDB = new UsuarioDB();
            usuarioDB.DataCadastro = usuarioDTO.DataCadastro;
            usuarioDB.Email = usuarioDTO.Email;
            usuarioDB.Login = usuarioDTO.Login;
            usuarioDB.Nome = usuarioDTO.Nome;
            usuarioDB.Senha = usuarioDTO.Senha;
            usuarioDB.Tipo.Id = usuarioDTO.Tipo.Id;
            return usuarioDB;
        }
    }
}
